<?php
/**
 * @package		orcamento	
 * @desc		Componente voltado to listar produtor e entreoutros
 * @author	    Lucas Emmanoel Araujo Machado (lucasemmanoel@gmail.com).
 * @since		2011-04-10	
 * @abstract	Model do Componente
 */

// Não permite o acesso direto ao arquivo.
defined( '_JEXEC' ) or die( 'Restricted access' );

// Recursos Joomla! para trabalhar com models.
jimport( 'joomla.application.component.model' );
jimport( 'joomla.filesystem.folder' );
jimport( 'joomla.filesystem.file' );

class OrcamentosModelProduto extends JModel
{
	private $dir ='images/stories/orcamento/';
	/*
	 * Constructor (recupera o valor do ID)
	 */
	function __construct( )
	{
		parent::__construct( );

		$array = JRequest::getVar( 'cid',  0, '', 'array' );
		$this->setId( ( int )$array[ 0 ] );
	}
	
	function setId( $id )
	{
		// Define o ID e a variável dos dados.
		$this->_id		= $id;
		$this->_data	= null;
	}
	
	function &getRegistro( )
	{
		// Load the data
		if ( empty( $this->_data ) )
		{
			$query = ' SELECT * FROM #__orcamento_produto'.
					'  WHERE id = '.$this->_id;
			$this->_db->setQuery( $query );
			$this->_data = $this->_db->loadObject( );
		}
		if ( !$this->_data )
		{
			$this->_data = new stdClass( );
			$this->_data->id = 0;
			$this->_data->nome = null;
		}
		
		return $this->_data;
	}

	function selectCategoria( $valor = NULL )
	{
		$select = Array();
		$query = ' SELECT id as value, nome as text FROM #__orcamento_categoria';
		$this->_db->setQuery( $query );
		$this->_data = $this->_db->loadObjectList( );

		$select[] = JHTML::_( 'select.option',  '0', '- Categoria -', 'value', 'text' );
		$select = array_merge($select, $this->_data);
		$select = JHTML::_(
			'select.genericlist', // Chamada o arquivo select, método genericlist
			$select, // array de dados
			'id_categoria', // name da select gerada
			'', // outros atributos html da tag
			'value', // nome do campo de valor do select
			'text', // nome do campo de texto do select
			$valor// valor default do select
		);
		return $select;
	}


	// Método para armazenar os dado no banco de dados
	function store( $data, $imagem )
	{
		// recupera instancia do banco de dados
		$row =& $this->getTable( 'produto'  );
		
		// Passa os dados do form para a table
		if ( !$row->bind( $data ) ) {
			$this->setError( $row->getErrorMsg( ) );
			return false;
		}
		// Checa consistencia dos dados
		if ( !$row->check( ) ) {
			$this->setError( $row->getErrorMsg( ) );
			return false;
		}

		// Salva os dados no banco de dados
		if ( !$row->store( ) ) {
			$this->setError( $row->getErrorMsg( ) );
			return false;
		}
		if($imagem['error'] == 0){
			$formato = array_reverse(explode('.',$imagem['name']));
			$formato = $formato[0];
			$imagem['name'] = "p{$row->id}.{$formato}";
			$row->imagem = $this->dir.$imagem['name'];
			$row->store( );
			$this->dir = JPATH_SITE.DS.$this->dir;
			$path = JFolder::exists($this->dir);
			if(!$path){
				JFolder::create($this->dir);
				$file = JFile::upload(JPATH_SITE.DS.'images'.DS.'index.html', $this->dir.'index.html');
			}
			$path = JFolder::exists($this->dir);
			if($path){
				$src = $imagem['tmp_name'];
				$destino = $this->dir.$imagem['name'];
				$file = JFile::upload($src, $destino);
				if(!$file){
					$this->setError( 'Erro ao gravar o arquivo' );
					return false;
				}
			}
		}
		return true;
	}

	// Método para deletar dados do banco de dados
	function delete( )
	{
		// Recupera id(s) que será(ão) deletados
		$cids = JRequest::getVar( 'cid', array( 0 ), 'post', 'array' );
		// Recupera instancia do banco de dados
		$row =& $this->getTable( 'produto'  );

		if ( count( $cids ) ) {
			foreach( $cids as $cid ) {
				if ( !$row->delete( $cid ) ) {
					$this->setError( $row->getError( ) );
					return false;
				}
			}
		}
		return true;
	}
}
